package co.com.inversiones.xyz.ltda.dao.impl;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import co.com.inversiones.xyz.ltda.dao.SucursalDao;
import co.com.inversiones.xyz.ltda.dto.Sucursal;
import co.com.inversiones.xyz.ltda.exception.DaoException;

public class SucursalDaoImpl extends HibernateDaoSupport implements SucursalDao {

	/**
	 * Metodo que inserta una nueva Sucursal en la base de datos
	 * 
	 * @param encuesta
	 * @throws DaoException
	 */
	@Override
	public void guardarSucursal(Sucursal sucursal) throws DaoException {

		Session sesion = null;

		try {
			sesion = getSession();

			sesion.save(sucursal);

		} catch (HibernateException e) {

			throw new DaoException("Error Guardando la solicitud de codigo: "
					+ sucursal.getIdSucursal(), e);

		}

	}

	/**
	 * Metodo que consulta una sucursal por su codigo
	 * 
	 * @param codigo
	 * @return datos de sucursal
	 * @throws DaoException
	 */
	@Override
	public Sucursal getSucursal(int codigo) throws DaoException {
		Sucursal sucursal = new Sucursal();

		Session sesion = null;
		try {
			sesion = getSession();

			sucursal = (Sucursal) sesion.createCriteria(Sucursal.class)
					.add(Restrictions.eq("idSucursal", codigo)).uniqueResult();
		} catch (HibernateException e) {
			throw new DaoException("Error consultado sucursal: " + codigo, e);
		}

		return sucursal;
	}

}
